1. Field of the Invention
This invention relates to cross reference systems, and more particularly relates to a cross reference system that is automatically updated and that provides increased flexibility. The invention is particularly well-suited for use in object-oriented programming environments, for example, environments in which an object-oriented programming language is used or in which a programming language that is modeled using object-oriented techniques is used.
2. Description of Related Art
Cross reference systems are used in the context of microprocessor-based systems for assisting programmers with the development and maintenance of programs executed by such systems. A cross reference system provides information regarding a user program, such as the manipulation of data within the user program. For example, if a particular variable has an unexpected value, the cross reference system may be used to rapidly determine all of the locations in the user program that affect the errant variable. Thus, the cross reference system facilitates debugging the user program because it helps locate errors more rapidly. Such cross reference systems are often provided in conjunction with a utility used to write, test, and debug user programs.
In the past, cross reference systems have been used to assist the programming of industrial control systems, such as programmable controller systems. Industrial control systems are used to control industrial processes, and more particularly to control a plurality of output devices in response to a plurality of input devices. In the case of an industrial control system, the user program is a control program which defines the manner in which the plurality of output devices are controlled.
Industrial control systems are often programmed in an object-oriented programming environment. As is known, in an object oriented programming environment, the programming language is formed of or is modeled by a plurality of objects that each provide a set of services and that each have one or more attributes which define the parameters of the object or the services it provides.
Existing cross reference systems suffer from two main disadvantages. First, existing cross reference systems are inflexible. For example, existing cross reference systems expect the user (programmer) to take certain programming actions in a certain order, and are intolerant to an order which is different than the expected order. Additionally, existing cross reference systems only maintain cross reference information with respect to certain limited types of information (i.e., data). Even where cross reference information is maintained, the amount of the cross reference information which is maintained is limited. For example, if a data structure having several subcomponents is referenced, existing cross reference systems are only able to indicate that the data structure as a whole is referenced, and are unable to indicate which specific sub-component of the data structure is referenced.
Second, existing cross reference systems do not automatically update cross reference information. Rather than updating the cross reference information automatically with each change, existing cross reference systems require the user to actively request such an update. As a practical matter, the user requests such updates only infrequently. Consequently, between updates, some of the cross reference information is invalid. This situation is undesirable because it can cause the user to be under the false impression that a program is free of errors.